<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
	<meta name="keywords" content="nacos 1.2.0-beta.0" />
	<meta name="description" content="nacos 1.2.0-beta.0" />
	<!-- 网页标签标题 -->
	<title>nacos 1.2.0-beta.0</title>
	<link rel="shortcut icon" href="https://img.alicdn.com/tfs/TB1hgJpHAPoK1RjSZKbXXX1IXXa-64-64.png"/>
	<link rel="stylesheet" href="/build/blogDetail.css" />
</head>
<body>
	<div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/nacos_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a href="/en-us/index.html">HOME</a></li><li class="menu-item menu-item-normal"><a href="/en-us/docs/quick-start.html">DOCS</a></li><li class="menu-item menu-item-normal menu-item-normal-active"><a href="/en-us/blog">BLOG</a></li><li class="menu-item menu-item-normal"><a href="/en-us/community">COMMUNITY</a></li><li class="menu-item menu-item-normal"><a href="https://www.aliyun.com/product/mse?spm=nacos-website.topbar.0.0.0">NACOS IN CLOUD</a><img class="menu-img" src="https://img.alicdn.com/tfs/TB1esl_m.T1gK0jSZFrXXcNCXXa-200-200.png"/></li><li class="menu-item menu-item-normal"><a href="https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&amp;positionCode=GP574861">HIRING</a><img class="menu-img" src="https://img.alicdn.com/tfs/TB1esl_m.T1gK0jSZFrXXcNCXXa-200-200.png"/></li><li class="menu-item menu-item-normal"><a href="http://console.nacos.io/nacos/index.html">DEMO-CONSOLE</a></li></ul></div></div></header><section class="blog-content markdown-body"><h1>Nacos 1.2.0-beta.0</h1>
<p>（注：目前发布的是1.2.0 beta版本，本文目的在于告诉大家如何使用最新功能，但是不推荐替换到生产环境）</p>
<p>Nacos是阿里巴巴开源的服务发现与配置管理项目，本次发布的1.2.0-beta.0版本，主要带来的是权限控制。本文将介绍包括这个功能在内的新版本发布的功能。</p>
<p><a name="GdnN0"></a></p>
<h2>升级指南</h2>
<p><a name="SXacG"></a></p>
<h4>服务端</h4>
<p>0.8.0及以上版本：</p>
<ol>
<li>解压安装包后替换{nacos.home}/target/nacos-server.jar</li>
<li>逐台重启Nacos Server即可</li>
</ol>
<p>0.8.0以下版本，先升级到1.0.0版本。
<a name="CNPhB"></a></p>
<h4>客户端</h4>
<p>替换pom依赖即可。</p>
<p><a name="qFsYS"></a></p>
<h2>权限控制</h2>
<p>这个版本的最大更新，是支持了命名空间粒度的权限控制。管理员可以针对不同的用户角色，授权某个命名空间的读写权限，来达到数据隔离的目的，关于权限控制的设计方案可以参考<a href="https://nacos.io/zh-cn/blog/access%20control%20design.html">https://nacos.io/zh-cn/blog/access%20control%20design.html</a>。这里介绍下权限控制功能的使用方式：</p>
<ol start="0">
<li>
<p>使用distribution/nacos-mysql.sql进行数据库初始化，主要是新增了users, roles, permissions三张表。</p>
</li>
<li>
<p>Server端打开权限控制开关。修改con/application.properties内容：</p>
</li>
</ol>
<pre><code class="language-json">nacos.core.auth.enabled=true
</code></pre>
<p>这个开关采用了热加载模式，无需重启Server即可生效。因此当权限控制功能使用有异常时，可以直接回滚到不鉴权的模式。</p>
<ol start="2">
<li>使用管理员账号登录Nacos控制台：</li>
</ol>
<p><img src="https://cdn.nlark.com/yuque/0/2020/png/333810/1580890674563-4d235fd9-983c-4b03-b45c-b1e164152ac7.png#align=left&amp;display=inline&amp;height=470&amp;name=image.png&amp;originHeight=940&amp;originWidth=2870&amp;size=274455&amp;status=done&amp;style=none&amp;width=1435" alt="image.png"><br />
<br />可以看到，左侧边栏增加了一个父菜单和三个子菜单，分别用于权限控制里的用户创建、角色创建以及权限管         理。这个菜单栏只会在管理员登录的时候显示，也就意味着只有管理员才能进行权限的管理和分配。</p>
<ol start="3">
<li>管理用户。点击“用户列表”，进入用户管理页面，可以进行用户的创建、修改和删除：</li>
</ol>
<p><img src="https://cdn.nlark.com/yuque/0/2020/png/333810/1580890674569-a729854e-a72d-4b3b-bc4c-53f9df831f3e.png#align=left&amp;display=inline&amp;height=573&amp;name=image.png&amp;originHeight=1146&amp;originWidth=2872&amp;size=349203&amp;status=done&amp;style=none&amp;width=1436" alt="image.png"></p>
<ol start="4">
<li>管理角色。因为Nacos的自带的权限是基于角色来进行分配的，因此需要给创建好的用户绑定一些角色：</li>
</ol>
<p><img src="https://cdn.nlark.com/yuque/0/2020/png/333810/1580890674603-f69520a1-f53e-4eb7-9186-f2963e7b3d65.png#align=left&amp;display=inline&amp;height=545&amp;name=image.png&amp;originHeight=1090&amp;originWidth=2874&amp;size=346611&amp;status=done&amp;style=none&amp;width=1437" alt="image.png"></p>
<ol start="5">
<li>管理权限。角色创建好以后，就可以给这个角色赋予特定的权限了：</li>
</ol>
<p><img src="https://cdn.nlark.com/yuque/0/2020/png/333810/1580890674580-e22945e1-be3a-46bd-b8f3-11b38eee0786.png#align=left&amp;display=inline&amp;height=581&amp;name=image.png&amp;originHeight=1162&amp;originWidth=2876&amp;size=368264&amp;status=done&amp;style=none&amp;width=1438" alt="image.png"></p>
<p>在“添加资源”对话框里，可以选择绑定的角色，命名空间资源以及对应的动作类型，例如在上图中，我们给角色role1绑定命名空间test的读写权限。然后又因为刚刚我们是将user1绑定到了role1上，那么user1这个用户就可以对test这个命名空间的资源进行读写操作了。<br /></p>
<ol start="6">
<li>使用user1登录控制台。点击控制台右上角，退出admin账号，然后用刚才创建的user1进行登录：</li>
</ol>
<p><img src="https://cdn.nlark.com/yuque/0/2020/png/333810/1580890674574-ca6eee1f-b749-4275-897d-ab9fba0ebf80.png#align=left&amp;display=inline&amp;height=449&amp;name=image.png&amp;originHeight=898&amp;originWidth=2874&amp;size=340563&amp;status=done&amp;style=none&amp;width=1437" alt="image.png"></p>
<p>如上图所示，首先是左侧的权限管理菜单消失了，因为当前用户不是管理员。其次是会弹出一个鉴权失败的提示框。不用担心，这个提示框意思是user1没有public命名空间的读权限，所以会弹出，但是不影响我们将命名空间切换到test：<br /><img src="https://cdn.nlark.com/yuque/0/2020/png/333810/1580890674621-bc16b2ad-4a9e-4ebc-83e8-fa41f4a0cba4.png#align=left&amp;display=inline&amp;height=536&amp;name=image.png&amp;originHeight=1072&amp;originWidth=2876&amp;size=554716&amp;status=done&amp;style=none&amp;width=1438" alt="image.png"></p>
<p>如上图所示，我们可以看到test命名空间的配置数据了，下面我们再来介绍客户端的使用。</p>
<ol start="7">
<li>首先依赖最新的nacos 1.2.0客户端，然后在初始化时添加如下代码：</li>
</ol>
<pre><code class="language-java">Properties properties = <span class="hljs-keyword">new</span> Properties();
properties.put(PropertyKeyConst.NAMESPACE, <span class="hljs-string">"99a791cf-41c4-4535-9e93-b0141652bad0"</span>);
properties.put(PropertyKeyConst.SERVER_ADDR, <span class="hljs-string">"127.0.0.1:8848"</span>);
<span class="hljs-comment">// 配置用户名：</span>
properties.put(PropertyKeyConst.USERNAME, <span class="hljs-string">"user1"</span>);
<span class="hljs-comment">// 配置密码：</span>
properties.put(PropertyKeyConst.PASSWORD, <span class="hljs-string">"pwd1"</span>);
ConfigService iconfig = NacosFactory.createConfigService(properties);
</code></pre>
<ol start="8">
<li>使用客户端进行正常的读写配置操作。</li>
</ol>
</section><footer class="footer-container"><div class="footer-body"><img src="/img/nacos_gray.png"/><div class="cols-container"><div class="col col-12"><h3>Vision</h3><p>By providing an easy-to-use service infrastructure such as dynamic service discovery, service configuration, service sharing and management and etc., Nacos help users better construct, deliver and manage their own service platform, reuse and composite business service faster and deliver value of business innovation more quickly so as to win market for users in the era of cloud native and in all cloud environments, such as private, mixed, or public clouds.</p></div><div class="col col-6"><dl><dt>Documentation</dt><dd><a href="/en-us/docs/what-is-nacos.html" target="_self">Overview</a></dd><dd><a href="/en-us/docs/quick-start.html" target="_self">Quick start</a></dd><dd><a href="/en-us/docs/contributing.html" target="_self">Developer guide</a></dd></dl></div><div class="col col-6"><dl><dt>Resources</dt><dd><a href="/en-us/community/index.html" target="_self">Community</a></dd><dd><a href="https://www.aliyun.com/product/acm?source_type=nacos_pc_20181219" target="_self">Cloud Service ACM</a></dd><dd><a href="https://www.aliyun.com/product/edas?source_type=nacos_pc_20181219" target="_self">Cloud Service EDAS</a></dd><dd><a href="https://www.aliyun.com/product/ahas?source_type=nacos_pc_20190225" target="_self">Cloud Service AHAS</a></dd></dl></div></div><div class="copyright"><span>@ 2018 The Nacos Authors | An Alibaba Middleware (Aliware) Project</span></div></div></footer></div></div>
	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
	<script>
		window.rootPath = '';
  </script>
	<script src="/build/blogDetail.js"></script>
</body>
</html>